Вступление

Если спросить питонистов, какую библиотеку использовать для визуализации данных, то большинство, несомненно, ответят: matplotlib или Seaborn. Ответят, правда, без особого удовольствия. Многое в этих библиотеках не так уж очевидно и требует не раз обратиться к StackOverflow. Касается это и таких распространенных ситуаций, как создание дополнительных осей или отображение на них дат.

Нужно понимать, что matplotlib создавался задолго до бурного развития Data Science, и в большей мере ориентировался на отображение массивов NumPy и параметрических функций SciPy. В то же время в Data Science распространен обобщающий тип объектов – датасеты, крупные таблицы с данными. Но существует альтернативная библиотека, которая позволяет создавать красивые, интерактивные, экспортируемые графики с помощью всего нескольких строк кода plotly.

Данная библиотека была создана одноименной компанией, владеющей множеством программ с открытым исходным кодом для создания интерактивных графиков и чартов. Зарабатывает компания за счет предоставления расширенного пакета функций своих программ. Также за отдельную плату она предлагает настроить Ваш собственный хостинг. Компания базируется в Монреале с офисом в Бостоне.

Plotly.py основывается на JavaScript-библиотеке D3.js. Также в Plotly есть API-обертки для R, Scala и многих других языков программирования. Стоит отметить, что документация представлена не на всех языках.

Примеры библиотек от Plotly

Plotly — библиотека для визуализации данных, состоящая из нескольких частей:

Так же на базе plotly и веб-сервера Flask существует специальная библиотека для создания дашбордов Dash.

C помощью Plotly можно как изучать какие-то данные «на лету» (не перестраивая график в matplotlib, изменяя масштаб, включая/выключая какие-то данные), так и построить полноценный интерактивный отчёт (дашборд).

Подготовка

Установить пакет plotly довольно лего с помощью пакета контроля версий pip

pip install plotly

Импортируем нужные нам библиотек ниже и можем приступать к созданию инфографики

Основа

Начнём с простой задачи построения графика по точкам.

Используем функцию

$f(x) = x^{2}$

Сперва поступим совсем просто и «в лоб»:

Создадим график с помощью функции line из подмодуля plotly.express (внутрь передадим 2 списка точек: координаты X и Y) Тут же «покажем» его с помозью метода show()

Обратите внимание — график интерактивный, если навести на него курсор, то можно его приближать и удалять, выделять участки, по наведению курсора на точку получать подробную информацию, возвращать картинку в исходное положение, а при необходимости «скриншотить» и сохранять как файл.

Всё это делается с помощью JS в вашем браузере.

2 строчки и готовый результат. Т.к. мы используем Express. Быстро и просто.

Но маловато гибкости, поэтому мы практически сразу переходим к более продвинутому уровню — plotly.graph_objects сразу создадим фигуру и нанесём на неё объекты.

Как видим, пока пусто.

Чтобы добавить что на график нам понадобится метод фигуры add_trace

fig.add_trace(ЧТО ХОТИМ ОТОБРАЗИТЬ)

В качестве аргумента мы передаем что хотим нарисовать. График по точкам. График мы уже рисовали с помощью Line в Экспрессе, у Объектов это - Scatter. Вот что он делает:

А теперь объединим, добавим Обьект на график:

Кроме того, такой способ позволит нам нанести на график столько объектов, сколько мы хотим:

Справа появилась ещё и легенда!

Впрочем, логично, пока график был один, зачем нам легенда?

Но магия Plotly тут не заканчивается. Нажмите на любую из подписей в легенде и соответствующий график исчезнет, а надпись станет более бледной. Вернуть их позволит повторный клик.

Изменить Легенду можно следующим образом:

Мы изменили назване Объектов в легенде с помощью атрибута name (для графика $f(x) = x^{2}$ использовались тег sup HTML чтобы корректно отображать степень, так же plotly поддерживает $\LaTeX{}$)

Ещё можно видеть что мы изменили цвет, цвет маркера marker_color может быть однозначным проитерирован

Помимо этого изменили положение легенды с помощью fig.update_layout() и атрибута legend_orientation, более подробно о возможных манипуляциях с легендой можно посмотреть здесь

С основыми мы разобрались, теперь посмотрим примеры!